import { fileURLToPath, URL } from "node:url";
import { resolve } from 'path'
import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import AutoImport from 'unplugin-auto-import/vite';
import Icons from "unplugin-icons/vite";
import IconsResolver from "unplugin-icons/resolver";
import Components from 'unplugin-vue-components/vite';
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
import path from 'path';
const baseDir = fileURLToPath(new URL('.', import.meta.url));

export default defineConfig({
  plugins: [
    vue(),
    createSvgIconsPlugin({
      // 指定需要缓存的图标文件夹
      iconDirs: [path.resolve(process.cwd(), "src/assets/svg")],
      // 指定symbolId格式
      symbolId: "i-[dir]-[name]"
    }),
    AutoImport({
      resolvers:
        [
          IconsResolver({
            prefix: "Icon"
          }),
          ElementPlusResolver()],
    }),
    Components({
      resolvers: [
        IconsResolver({
          enabledCollections: ["ep"]
        }),
        ElementPlusResolver()
      ],
    }),
    Icons({
      autoInstall: true,
      compiler: "vue3"
    }),
  ],
  resolve: {
    alias: {
      // "@": fileURLToPath(new URL("./src", import.meta.url)),
      '@': resolve(baseDir, './src'),
    },
  },
  server: {
    port: 3001,
  },
  build: {
    outDir: path.resolve(__dirname, '../../mctp-platform/src/mctp-module'),
    lib: {
      entry: 'src/main.ts',       // 插件入口文件
      name: 'Modules',         // UMD 全局变量名（可选）
      fileName: 'index',          // 输出文件名（index.js）
      formats: ['es']             // 使用 ES 模块格式（推荐）
    },
    rollupOptions: {
      // external: ['mctp-platform'],  // 排除平台
      external: [],               // 空数组表示不外部化任何依赖（全部打包）
      output: {
        // 如果依赖需要全局变量（可选）
        globals: {}
      }
    },
  },
  base: "/modules/"
});